/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package vue;


import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
import utiles.K;

/**
 *
 * @author S219
 */
public abstract class FourmizFrame extends JFrame{
    
    public FourmizFrame()
    {
        this("");
        
    }
    
    @Override
    public void setTitle(String titre)
    {
        super.setTitle("Fourmiz v" + K.VERSION + " - " + titre);
    }
    
    public FourmizFrame(String titre)
    {
        super();
        this.setTitle(titre);
        
        //Look&Feel
        try  // Gestion des exceptions eventuelles pour le Look&Feel
        {
            // Choix du Look&Feel Natif :
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }catch (ClassNotFoundException | IllegalAccessException | InstantiationException | UnsupportedLookAndFeelException e)
        {
            // Dans le cas oe l'exception est levee, cela est generalement du
            // au fait que la classe de Look&Feel n'a pas ete trouvee.
            // Reessayer en verifiant l'orthographe du parametre d'appel de 
            // setLookAndFeel.
            System.err.println("Mauvais look&feel employe");
            try
            {
                UIManager.setLookAndFeel("com.seaglasslookandfeel.SeaGlassLookAndFeel");
            }catch(ClassNotFoundException | IllegalAccessException | InstantiationException | UnsupportedLookAndFeelException e1)
            {
            }	
        }
        
        // à décommenter pour avoir la fenêtre en plein écran au démarrage
//        this.setExtendedState(this.MAXIMIZED_BOTH);
        this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        
    }
    
    /**
     * 
     * @param cle Le nom du champ
     * @param valeur L'input du champ
     * @return un panel avec la cle-valeur en 1 panel
     */
    protected JPanel getCleValeur(String cle, JComponent valeur)
    {
        JPanel cle_valeur = new JPanel(new GridLayout(1,2));
        cle_valeur.setBorder(new EmptyBorder(0,0,10,0));
        
        JLabel label_cle = new JLabel(cle, JLabel.RIGHT);
        label_cle.setBorder(new EmptyBorder(0,0,0,10));

        cle_valeur.add(label_cle);
        cle_valeur.add(valeur);        
        
        return cle_valeur;
    }
    
    protected JPanel getFieldset(String titre)
    {
        JPanel fieldset = new JPanel();
        fieldset.setBorder(BorderFactory.createTitledBorder(titre));
        return fieldset;
    }
    
    /**
     * Centre la fenetre e l'ecran
     */
    protected void centrerFenetre()
    {
        this.setLocationRelativeTo(null);
    }
    
    /**
     * Demande une confirmation avant de quitter le systeme
     */
    protected void confirmBeforeExit()
    {
        int retour = JOptionPane.showConfirmDialog(this, "Souhaitez-vous reellement quitter ?", "Fourmiz v" + K.VERSION , JOptionPane.YES_NO_OPTION);
        if(retour == JOptionPane.OK_OPTION)
        {
            System.exit(0);
        }
    }
}
